<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>function类型</title>
</head>
<body>
<script>
    //函数内部属性:
    // 1:arguments属性：指向一个类似数组但不是数组的对象，存储的是实际传递给函数的参数，而不局限于函数声明定义的参数列表
    function show(a,b){
        if(arguments.length==2){
            alert(a+b)
        }else if(arguments.length==3){
            alert(arguments[0]+arguments[1]+arguments[2])
        }
        console.log(arguments)
    }
//    show('hello','world')
//    show('hello','world','haha');
//    alert(show.length);

    // 2:length属性：函数定义时所指定参数的个数

    // 3：arguments中的callee属性：它表示对函数对象本身的引用
     //使用递归实现阶乘
    function jie(n){
        if(n==1){
            return 1;
        }else{
//            return n+jie(n-1);
            return n+arguments.callee(n-1);
        }
    }
    alert(jie(100));

    // 4:局部变量和全局变量---(js只存在函数作用域，for 中定义的为全局变量)
    var b=1;
    for(var c=1;c<10;c++){
        console.log(c)
    }
    function fun(){
        var a=66;//局部变量：只能被其所在的函数使用
        var b=99;//当局部变量和全局变量同名时，使用局部变量
        console.log(b);
        console.log(c);
    }
    fun();
</script>
</body>
</html>